The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
A domain name system (DNS) query is generally used to obtain an Internet Protocol (IP) address corresponding to a particular domain name and associated with a particular device in a network. A standard DNS query may also facilitate service discovery. A standard DNS query may be constructed to discover instances of a desired service available within a network or domain. This type of service discovery is referred to as DNS-based Service Discovery (DNS-SD).
In response to a DNS query associated with DNS-SD, a responding computer provides a list of device instances within a domain that are capable of providing a desired service specified by the requesting device. The requesting device specifies in the DNS query the type of desired service and the specific domain in which the requesting device is looking for that service. For example, the requesting device may be looking for printer services within its local network and may send a DNS query to find out which printer services are available in the network. If a second device also makes the same DNS query, the same list of device instances is returned to this second device; the same DNS query generally returns the same response. Once the requesting device has obtained a list of available printer services, it can provision a subsequent DNS query to find out exactly how to contact that service (e.g., via the name and/or the IP address of the device providing the service).
However, not every device instance in the response list may actually be relevant or useful to the requesting device. For example, if the requesting device is located in building A of a geographically large campus domain that includes buildings A through Z, then receiving a list of printer capable instances in buildings A through Z may be more than the requesting device needs. It is unlikely that a user of the requesting device will print to a printer capable instance located outside of building A.
DNS-SD can be performed in a de-centralized or centralized environment. In the de-centralized case, also referred to as multi-cast DNS, DNS-SD is performed without involving a centralized repository, such as a DNS server. Instead, a device looking for a particular type of service multi-casts a DNS query to all devices in its local network. Those devices within the local network capable of providing the particular type of service respond to the requesting device. Thus, the response to the multi-cast DNS query comprises a list of device instances within the local network having the desired service. A particular instance from the list of device instances can then be selected to access the desired service from the particular device instance.
In the centralized case, also referred to as uni-cast DNS, DNS-SD is performed using a centralized repository, such as a DNS server. (In practice, the DNS server may be one computer in a hierarchy of computers, and a first DNS server in the hierarchy may fail-over the request to the next computer in the hierarchy if the first does not have responsive data.) A device looking for a particular type of service in a particular domain uni-casts a DNS query to the DNS server. The DNS server returns a list of device instances within the particular domain having the desired service.
Although multi-cast DNS does not require a DNS server, a drawback of using multi-cast DNS is the more limited network or scope from which device instances capable of the desired service are found. Typically the scope of responsive data is limited to the local network of the requesting device. As such, the device attempting to discover a particular service may not receive information about all of the services of interest. Uni-cast DNS encompasses services accessible on one or more sub-networks and extends beyond the local network of the requesting device.